home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / BARNET / FREENET / BRODIE / INTERNET / !InternetD / h / ntalkd < prev    next >
Text File  |  1995-05-12  |  3KB  |  77 lines

  1. #define u_char    unsigned char
  2. #define u_long    unsigned long
  3. /*
  4.  * This describes the protocol used by the talk server and clients.
  5.  *
  6.  * The talk server acts a repository of invitations, responding to
  7.  * requests by clients wishing to rendezvous for the purpose of
  8.  * holding a conversation.  In normal operation, a client, the caller,
  9.  * initiates a rendezvous by sending a CTL_MSG to the server of
  10.  * type LOOK_UP.  This causes the server to search its invitation
  11.  * tables to check if an invitation currently exists for the caller
  12.  * (to speak to the callee specified in the message).  If the lookup
  13.  * fails, the caller then sends an ANNOUNCE message causing the server
  14.  * to broadcast an announcement on the callee's login ports requesting
  15.  * contact.  When the callee responds, the local server uses the
  16.  * recorded invitation to respond with the appropriate rendezvous
  17.  * address and the caller and callee client programs establish a
  18.  * stream connection through which the conversation takes place.
  19.  */
  20.  
  21. /*
  22.  * Client->server request message format.
  23.  */
  24. typedef struct {
  25.     u_char    vers;        /* protocol version */
  26.     u_char    type;        /* request type, see below */
  27.     u_char    answer;        /* not used */
  28.     u_char    pad;
  29.     u_long    id_num;        /* message id */
  30.     struct    sockaddr_in addr;
  31.     struct    sockaddr_in ctl_addr;
  32.     long    pid;        /* caller's process id */
  33. #define    NAME_SIZE    12
  34.     char    l_name[NAME_SIZE];/* caller's name */
  35.     char    r_name[NAME_SIZE];/* callee's name */
  36. #define    TTY_SIZE    16
  37.     char    r_tty[TTY_SIZE];/* callee's tty name */
  38. } CTL_MSG;
  39.  
  40. /*
  41.  * Server->client response message format.
  42.  */
  43. typedef struct {
  44.     u_char    vers;        /* protocol version */
  45.     u_char    type;        /* type of request message, see below */
  46.     u_char    answer;        /* respose to request message, see below */
  47.     u_char    pad;
  48.     u_long    id_num;        /* message id */
  49.     struct    sockaddr_in addr;    /* address for establishing conversation */
  50. } CTL_RESPONSE;
  51.  
  52. #define    TALK_VERSION    1        /* protocol version */
  53.  
  54. /* message type values */
  55. #define LEAVE_INVITE    0    /* leave invitation with server */
  56. #define LOOK_UP        1    /* check for invitation by callee */
  57. #define DELETE        2    /* delete invitation by caller */
  58. #define ANNOUNCE    3    /* announce invitation by caller */
  59.  
  60. /* answer values */
  61. #define SUCCESS        0    /* operation completed properly */
  62. #define NOT_HERE    1    /* callee not logged in */
  63. #define FAILED        2    /* operation failed for unexplained reason */
  64. #define MACHINE_UNKNOWN    3    /* caller's machine name unknown */
  65. #define PERMISSION_DENIED 4    /* callee's tty doesn't permit announce */
  66. #define UNKNOWN_REQUEST    5    /* request has invalid type value */
  67. #define    BADVERSION    6    /* request has invalid protocol version */
  68. #define    BADADDR        7    /* request has invalid addr value */
  69. #define    BADCTLADDR    8    /* request has invalid ctl_addr value */
  70.  
  71. /*
  72.  * Operational parameters.
  73.  */
  74. #define MAX_LIFE    60    /* max time daemon saves invitations */
  75. /* RING_WAIT should be 10's of seconds less than MAX_LIFE */
  76. #define RING_WAIT    30    /* time to wait before resending invitation */
  77.